home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 4
/
Aminet 4 - November 1994.iso
/
aminet
/
comm
/
ums
/
ums109_1.lha
/
Tools
/
SelectMail.LHA
/
SelectMail
/
SelectMail.mod
< prev
Wrap
Text File
|
1993-04-04
|
6KB
|
177 lines
(* ------------------------------------------------------------------------
:Program. SelectMail
:Contents. selects all messages addressed to a certain user
:Author. Martin Horneffer [mh]
:Address. Snail Mail: EMail:
:Address. Warmweiherstraße 18 UUCP: mh@umshq.adsp.sub.org
:Address. D-5100 Aachen FIDO: 2:242/7.9
:History. v?.? [mh] 15-Apr-92
:History. v1.0 [kai] 04-Apr-93 adepted to new interfaces
:Copyright. Public Domain
:Language. Oberon
:Translator. AMIGA OBERON v3.01d
:Imports. ums, MHArgs
------------------------------------------------------------------------ *)
MODULE SelectMail;
IMPORT ums, MHArgs, io, u:Utility, sys:SYSTEM, NoGuru;
VAR
login : LONGINT;
cfg : MHArgs.Config;
name,pwd,sname: ARRAY 256 OF CHAR;
result : LONGINT;
PROCEDURE CheckErr();
VAR err: INTEGER; txt:ums.STRPTR;
BEGIN
err := ums.ErrNum( login );
IF err # ums.ok THEN
io.WriteString("UMS-error:");
io.WriteInt( err, 3);
io.WriteString(", '");
txt := ums.ErrTxt( login );
io.WriteString(txt^);
io.WriteString("'\n");
HALT(20);
END;
END CheckErr;
BEGIN
cfg := MHArgs.OpenConfig( "NAME/A,PASSWORD/A,SELECT-NAME","Select Mail 1.0 - © 4.4.1992 by Martin Horneffer\n"
"Select messages addressed to a certain user.\n\n"
"name, password : your name and password for UMS.\n"
" select-name : select all messages that are addressed to this user.\n"
" This is done by the 'to'-field as well as by threads.\n"
" Default is same as 'name'\n"
"\o$VER: SelectMail 1.0 (4.4.93)\n\r", NIL);
IF cfg = NIL THEN HALT(20) END;
IF cfg.GetString( "NAME", name) & cfg.GetString( "PASSWORD", pwd) THEN
IF ~cfg.GetString( "SELECT-NAME", sname) THEN sname := name END;
login := ums.Login( name, pwd);
IF login = 0 THEN
io.WriteString("login failure\n");
ELSE
(* NOTE: since we just logged in all local flags are cleared. *)
(* Usually you'll have to clear them by hand before using. *)
(* set local flag 0 on all new messages *)
io.WriteString("looking for new messages: ");
result := ums.UMSSelectTags( login,
ums.tagSelMask, LONGSET{ums.ViewAccess,ums.postPoned,ums.Old},
ums.tagSelMatch, LONGSET{ums.ViewAccess},
ums.tagSelWriteLocal, 1,
ums.tagSelSet, LONGSET{0},
ums.tagSelUnset, LONGSET{},
u.done);
io.WriteInt( result, 1); io.WriteString(" found.\n");
CheckErr();
(* set local flag 1 on all messages with matching TONAME *)
io.WriteString("selecting by name: ");
result := ums.UMSSelectTags( login,
ums.tagToName, sys.ADR(sname),
ums.tagSelWriteLocal, 1,
ums.tagSelSet, LONGSET{1},
ums.tagSelUnset, LONGSET{},
ums.tagSelQuick, 1,
u.done);
io.WriteInt( result, 1); io.WriteString(" selected.\n");
CheckErr();
(* set local flag 4 for the new ones amongst them *)
io.WriteString(" new messages amongst these: ");
result := ums.UMSSelectTags( login,
ums.tagSelReadLocal, 1,
ums.tagSelMask, LONGSET{0,1},
ums.tagSelMatch, LONGSET{0,1},
ums.tagSelWriteLocal, 1,
ums.tagSelSet, LONGSET{4},
ums.tagSelUnset, LONGSET{},
ums.tagSelQuick, 1,
u.done);
io.WriteInt( result, 1); io.WriteString(".\n");
CheckErr();
(* set local flag 2 on all messages with matching FROMNAME *)
io.WriteString("looking for messages written by you: ");
result := ums.UMSSelectTags( login,
ums.tagFromName, sys.ADR(sname),
ums.tagSelWriteLocal, 1,
ums.tagSelSet, LONGSET{2},
ums.tagSelUnset, LONGSET{},
ums.tagSelQuick, 1,
u.done);
io.WriteInt( result, 1); io.WriteString(" found.\n");
CheckErr();
(* set local flag 3 on all replies to messages with flag 2 *)
io.WriteString("selecting replies to your msgs: ");
result := ums.UMSSelectTags( login,
ums.tagSelReadLocal, 1,
ums.tagSelParent, 1,
ums.tagSelMask, LONGSET{2},
ums.tagSelMatch, LONGSET{2},
ums.tagSelWriteLocal, 1,
ums.tagSelSet, LONGSET{3},
ums.tagSelUnset, LONGSET{},
ums.tagSelQuick, 1,
u.done);
io.WriteInt( result, 1); io.WriteString(" selected.\n");
CheckErr();
(* set local flag 4 for the new ones amongst them *)
io.WriteString(" new messages amongst these: ");
result := ums.UMSSelectTags( login,
ums.tagSelReadLocal, 1,
ums.tagSelMask, LONGSET{0,3},
ums.tagSelMatch, LONGSET{0,3},
ums.tagSelWriteLocal, 1,
ums.tagSelSet, LONGSET{4},
ums.tagSelUnset, LONGSET{},
ums.tagSelQuick, 1,
u.done);
io.WriteInt( result, 1); io.WriteString(".\n");
CheckErr();
(* set user-flag 7 on all messages with local flag 4 set *)
io.WriteString("totally selected: ");
result := ums.UMSSelectTags( login,
ums.tagSelReadLocal, 1,
ums.tagSelMask, LONGSET{4},
ums.tagSelMatch, LONGSET{4},
ums.tagSelSet, LONGSET{ums.selected},
ums.tagSelUnset, LONGSET{},
u.done);
io.WriteInt( result, 1); io.WriteString(".\n");
CheckErr();
END;
END;
CLOSE
IF login # 0 THEN ums.Logout(login) END;
END SelectMail.